package gof_001_创建型_Create.gof_001_单例_Singleton.gof_002_Hungry;

/**
 * 饿汉式单例
 */
public class Student {
    /**
     * 第二步前置:在类加载的时候,直接 new Student 赋值给静态属性 student
     */
    private static Student student = new Student();

    /**
     * 第一步:因为不想让外部创建该类,所以将构造器设为 private
     */
    private Student() {
    }

    /**
     * 第二步:既然外部不能访问到构造器,那外部如何获得一个实例对象呢?
     * 对外提供一个方法 getInstance() 返回一个 Student 对象
     * 1:外部不能创建 Student,又想使用 Student 里的 getInstance 方法,所以该方法必须置为 static
     * 2:返回出去的 Student 对象哪里来呢? 能不能 return new Student()呢?
     * 是不能的,因为如果 return new Student() 每次调用 getInstance 都会创建一个对象,所以要先创建好一个对象
     */
    public static Student getInstance() {
        return student;
    }
}